package cn.iocoder.yudao.framework.excel.core.strategy.impl;

import cn.iocoder.yudao.framework.dict.core.util.DictFrameworkUtils;

import cn.iocoder.yudao.framework.excel.core.strategy.DictTenantStrategy;

import javax.annotation.Resource;
import java.util.List;

/**
 * 中创租户的字典策略实现类。
 * 该类实现了 DictTenantStrategy 接口，并提供了中创租户特定的字典操作方法。
 * 所有的字典操作方法都使用了 DictFrameworkUtils 工具类来获取字典数据。
 *
 * @Author LiZhiMin
 * @Date 2024/9/4 9:44
 */
public class DictCvicseStrategyImpl implements DictTenantStrategy {

    /**
     * 根据字典类型和字典值获取字典标签。
     * 该方法调用 DictFrameworkUtils 的方法来获取指定字典类型和字典值对应的标签。
     *
     * @param dictType 字典类型，例如"USER_STATUS"
     * @param value    字典值，例如"1"
     * @return 字典标签，例如"Active"
     */
    @Override
    public String getDictDataLabel(String dictType, String value) {
        // 使用中创租户的字典数据逻辑来获取标签
        return DictFrameworkUtils.getDictDataLabel(dictType, value);
    }

    /**
     * 根据字典类型获取字典标签的列表。
     * 该方法调用 DictFrameworkUtils 的方法从缓存中获取指定字典类型的标签列表。
     *
     * @param dictType 字典类型，例如"USER_STATUS"
     * @return 字典标签列表，例如["Active", "Inactive", "Pending"]
     */
    @Override
    public List<String> getDictDataLabelList(String dictType) {
        // 使用中创租户的字典数据逻辑来获取标签列表
        return DictFrameworkUtils.getLabelListByDictType(dictType, "888999666");
    }

    /**
     * 根据字典类型和字典标签获取字典值。
     * 该方法调用 DictFrameworkUtils 的方法来从缓存中获取指定字典类型和标签对应的值。
     *
     * @param dictType 字典类型，例如"USER_STATUS"
     * @param label    字典标签，例如"Active"
     * @return 字典值，例如"1"
     */
    @Override
    public String parseDictDataValue(String dictType, String label) {
        // 使用中创租户的字典数据逻辑来获取字典值
        return DictFrameworkUtils.parseDictDataValue(dictType, label);
    }

    /**
     * 根据字典类型和字典标签（Integer 类型）获取字典标签。
     * 该方法调用 DictFrameworkUtils 的方法来从缓存中获取指定字典类型和 Integer 类型值对应的标签。
     *
     * @param dictType 字典类型，例如"USER_STATUS"
     * @param value    Integer 类型的值，例如1
     * @return 字典标签，例如"Active"
     */
    @Override
    public String getDictDataLabel(String dictType, Integer value) {
        // 使用中创租户的字典数据逻辑来获取标签
        return DictFrameworkUtils.getDictDataLabel(dictType, value);
    }

    /**
     * 根据字典类型获取字典值的列表。
     * 该方法调用 DictFrameworkUtils 的方法从缓存中获取指定字典类型的值列表。
     *
     * @param dictType 字典类型，例如"USER_STATUS"
     * @return 字典值列表，例如["1", "2", "3"]
     */
    @Override
    public List<String> getDictDataValueList(String dictType) {
        // 使用中创租户的字典数据逻辑来获取值列表
        return DictFrameworkUtils.getValueListByDictType(dictType, "888999666");
    }
}
